#pragma once
#include "uv.h"
typedef void(*CbFuncTimer)       (void* rUserData);
class CTimer
{
public:
	CTimer(uv_loop_t* loop);
	~CTimer();
	/**
	 * @brief 开启定时器 
	 * @param uint64_t timeout	timeout 毫秒后执行定时函数
	 * @param uint64_t repeat	执行定时函数的频率。每隔repeat毫秒执行一次定时函数
	 * @param CbFuncTimer cbTimer	定时函数
	 * @param void* userData		用户数据
	 * @return 无
	 * @note 注意
	 * @see  
	 */
	void StartTimer(uint64_t timeout,  uint64_t repeat,  CbFuncTimer cbTimer,  void* userData);	
	/**
	 * @brief 内部定时函数 	 
	 * @return 无
	 * @note 注意
	 * @see  
	 */
	static void OnTimer(uv_timer_t* rTimer);

	/**
	* @brief 停止定时器
	* @return 无
	* @note 注意
	* @see
	*/
	void StopTimer();
private:
	uv_timer_t m_uvTimer;
	uv_loop_t* m_loop=nullptr;
	bool m_bRumTimer=false;
public:
	CbFuncTimer m_timercb;
	void* m_usrData;
};

